package by.bsu.touragency.tag;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.log4j.Logger;

import by.bsu.touragency.command.guest.ConfigurationManager;
import by.bsu.touragency.db.beans.Tour;
import by.bsu.touragency.db.dao.TourDAO;



public class TourPropositionTag extends BodyTagSupport {

	private static final long serialVersionUID = -4803241311077357656L;
	private static Logger logger=Logger.getLogger("log");
	private static TourDAO t = new TourDAO();
	private static ArrayList<Tour> nb= new ArrayList<Tour>();

	
	private int num;

	public void setNum(String num) {
		this.num = new Integer(num);
	}

	public int getTourPrice() {
		return t.readNB().get(num).getPrice();
	}
	
	public String getTourPlace() {
		String str;
		str = nb.get(num).getHotel().getName()+", ";
		str += nb.get(num).getHotel().getCity().getCityName()+", ";
		str += nb.get(num).getHotel().getCity().getCountry().getCountryName();
		return str;
	}
	public String getTourPeople() {
		String str;
		str = nb.get(num).getHotel().getPeople().getChildren()+ " children & ";
		str += nb.get(num).getHotel().getPeople().getAdults()+" adults";
		return str;
	}
	public String getTourEat() {
		String str;
		str = nb.get(num).getHotel().getEat().getType()+ ": ";
		if(nb.get(num).getHotel().getEat().getAbout()!=null)
		str += nb.get(num).getHotel().getEat().getAbout()+" ";
		return str;
	}
	public String getTourHotel() {
		String str;
		str = nb.get(num).getHotel().getName()+ " ";
		str += nb.get(num).getHotel().getStar().getName()+" ";
		if(nb.get(num).getHotel().getStar().getAbout()!=null)
		str += "("+nb.get(num).getHotel().getStar().getAbout()+") .";
		if(nb.get(num).getHotel().getAbout()!=null)
		str = nb.get(num).getHotel().getAbout();
		return str;
	}
	public String getTourCountry() {
		String str;
		str = nb.get(num).getHotel().getCity().getCountry().getCountryName()+". ";
		if(nb.get(num).getHotel().getCity().getCountry().getAbout()!=null)
		str += nb.get(num).getHotel().getCity().getCountry().getAbout();
		return str;
	}
	public String getTourCity() {
		String str;
		str = nb.get(num).getHotel().getCity().getCityName()+". ";
		if(nb.get(num).getHotel().getCity().getAbout()!=null)
		str += nb.get(num).getHotel().getCity().getAbout();
		return str;
	}
	public String getTourTransfer() {
		String str;
		str = nb.get(num).getTransfer().getDateFrom()+" ";
		str += nb.get(num).getTransfer().getDateTo();
		return str;
	}
	public String getTourTransport() {
		String str;
		str = nb.get(num).getTransport().getView().getName()+"  ";
		str = nb.get(num).getTransport().getView().getNumber()+"."+"\n";
		str += nb.get(num).getTransport().getDateFrom()+" - ";
		str += nb.get(num).getTransport().getCityFrom() +"\n";
		str += nb.get(num).getTransport().getDateTo()+" - ";
		str += nb.get(num).getTransport().getCityTo() +". ";
		return str;
	}

	public String getTourDates() {
		String str;
		str = nb.get(num).getDateFrom().getTime()+" - ";
		str += nb.get(num).getDateTo().getTime()+".";
		return str;
	}
	public int doStartTag() throws JspTagException {
		logger.info("All not booked tours tag do start");
		nb = t.readNB();
		num = nb.size();
		
		return EVAL_BODY_INCLUDE;
	}

	public int doAfterBody() throws JspTagException {
		logger.info("All not booked tours tag After body");
		if (num-- > 0) {
			try {
				pageContext.getOut().write("<div class=");
				pageContext.getOut().write("\"post1\"");
				pageContext.getOut().write(">");
				pageContext.getOut().write("<div class=");
				pageContext.getOut().write("\"post\"");
				pageContext.getOut().write(">");
				pageContext.getOut().write("<h1 class=");
				pageContext.getOut().write("\"title\"");
				pageContext.getOut().write(">");
				
				pageContext.getOut().write(getTourPlace());
				
				pageContext.getOut().write("</h1>");
				pageContext.getOut().write("<div class=");
				pageContext.getOut().write("\"entry\"");
				pageContext.getOut().write(">");
				pageContext.getOut().write("<p><img src=\"");
				pageContext.getOut().write(pageContext.getServletContext().getContextPath()+
						ConfigurationManager.getInstance().getProperty(
						ConfigurationManager.IMAGE_PAGE_PATH)+"\"");
				pageContext.getOut().write("alt=\"\" width=");
				pageContext.getOut().write("\"140\"");
				pageContext.getOut().write("height=");
				pageContext.getOut().write("\"125\"");
				pageContext.getOut().write("class=");
				pageContext.getOut().write("\"left\"");
				pageContext.getOut().write("/>");
				
				pageContext.getOut().write(getTourDates());
				pageContext.getOut().write("<br/>");
				pageContext.getOut().write(getTourPeople());
				pageContext.getOut().write("<br/>");
				pageContext.getOut().write(getTourEat());
				pageContext.getOut().write("<br/>");
				pageContext.getOut().write("Price: ");
				pageContext.getOut().write(getTourPrice()+" $");
				
				pageContext.getOut().write("</p>");
				pageContext.getOut().write("<p>&nbsp;</p>");
				pageContext.getOut().write("</div>");
				pageContext.getOut().write("<div class=");
				pageContext.getOut().write("\"meta \"");
				pageContext.getOut().write(">");
				pageContext.getOut().write("<p class=");
				pageContext.getOut().write("byline");
				pageContext.getOut().write(">Posted on July 21, 2007</p>");
				pageContext.getOut().write("<p class=");
				pageContext.getOut().write("\"links\"");
				pageContext.getOut().write("><a href=");
				
				pageContext.getOut().write("\"jsp/viewtour.jsp?idTour="+(num)+"\""); 
				
				pageContext.getOut().write("class=");
				pageContext.getOut().write("\"more\"");
				pageContext.getOut().write(">Read more</a> <b>|</b> <a href=");
				pageContext.getOut().write("\"#\"");
				pageContext.getOut().write("class=");
				pageContext.getOut().write("\"comments\"");
				pageContext.getOut().write(">Comments (32)</a></p>");
				pageContext.getOut().write("</div>");
				pageContext.getOut().write("</div>");
				pageContext.getOut().write("</div>");
			} catch (IOException e) {
				logger.error("Error in Tour_proposition_tag");
			}
			return EVAL_BODY_AGAIN;
		} else {
			return SKIP_BODY;
		}
	}

	public int doEndTag() throws JspTagException {
		return SKIP_BODY;
	}
}
